์ž‘์„ฑ: 2026-03-04 02:11:43์ˆ˜์ •: 2026-03-04 02:11:43

Java 8์—์„œ ์ƒ์œ„ ๋ฒ„์ „์œผ๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€์ด๋“œ (Workflow)

Java 8์—์„œ 11, 17, ํ˜น์€ 21๋กœ ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•œ ์ˆซ์ž ๋ณ€๊ฒฝ ์ด์ƒ์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Java 9์—์„œ ๋„์ž…๋œ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ(Project Jigsaw)๊ณผ ์‚ญ์ œ๋œ API๋“ค๋กœ ์ธํ•ด ์ฒด๊ณ„์ ์ธ ์ ‘๊ทผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ 6๋‹จ๊ณ„ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


1๋‹จ๊ณ„: ์‚ฌ์ „ ์˜ํ–ฅ๋„ ๋ถ„์„ (jdeps ํ™œ์šฉ)

๊ฐ€์žฅ ๋จผ์ € ํ•  ์ผ์€ ์šฐ๋ฆฌ ์ฝ”๋“œ๊ฐ€ JDK ๋‚ด๋ถ€ API(Internal API)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • jdeps ๋„๊ตฌ ์‚ฌ์šฉ: JDK์— ๋‚ด์žฅ๋œ ์ด ๋„๊ตฌ๋Š” ์˜์กด์„ฑ์„ ๋ถ„์„ํ•ด ์ค๋‹ˆ๋‹ค.
    jdeps --jdk-internals -recursive -cp "lib/*" your-app.jar
  • ์กฐ์น˜: sun.* ๋˜๋Š” com.sun.* ๊ณ„์—ด์˜ ๋‚ด๋ถ€ API ํ˜ธ์ถœ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด, java.* ๋˜๋Š” javax.*์™€ ๊ฐ™์€ ํ‘œ์ค€ API๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: sun.misc.BASE64Encoder โ†’ java.util.Base64)

2๋‹จ๊ณ„: ๋นŒ๋“œ ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ

์ตœ์‹  Java๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋นŒ๋“œ ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ๊ฐ€์žฅ ํฐ ๊ฑธ๋ฆผ๋Œ์ž…๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ๋„๊ตฌ ์ตœ์‹ ํ™”:
    • Maven: 3.8.x ์ด์ƒ ๊ถŒ์žฅ
    • Gradle: 7.3 ์ด์ƒ (Java 17/21 ์™„๋ฒฝ ์ง€์›์„ ์œ„ํ•ด 8.x ๊ถŒ์žฅ)
  • ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ: ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Lombok (1.18.20+), Mockito (3.x+), Byte Buddy, Hibernate, Spring Boot (3.x๋Š” Java 17+ ํ•„์ˆ˜)

3๋‹จ๊ณ„: ์‚ญ์ œ๋œ ๋ชจ๋“ˆ ๋Œ€์‘ (J2EE ๋ชจ๋“ˆ)

Java 11๋ถ€ํ„ฐ JDK์— ํฌํ•จ๋˜์–ด ์žˆ๋˜ Java EE(ํ˜„์žฌ Jakarta EE) ๊ด€๋ จ ๋ชจ๋“ˆ์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ: JAXB, JAX-WS, JTA ๋“ฑ์ด ํฌํ•จ๋œ ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: pom.xml ๋˜๋Š” build.gradle์— ๋ช…์‹œ์ ์œผ๋กœ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    <!-- ์˜ˆ: JAXB ์ถ”๊ฐ€ -->
    <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.1</version>
    </dependency>

4๋‹จ๊ณ„: ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์ • ๋ณ€๊ฒฝ (Release ์˜ต์…˜)

๋‹จ์ˆœํžˆ source์™€ target ๋ฒ„์ „์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋ณด๋‹ค --release ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

  • Maven ์„ค์ • ์˜ˆ์‹œ:
    <properties>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>
  • ์ด์œ : release ์˜ต์…˜์€ ํ•ด๋‹น ๋ฒ„์ „์˜ ๋ฌธ๋ฒ•๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํ•ด๋‹น ๋ฒ„์ „์— ์กด์žฌํ•˜๋Š” API์ธ์ง€๊นŒ์ง€ ์ฒดํฌํ•ด ์ค๋‹ˆ๋‹ค.

5๋‹จ๊ณ„: ๋Ÿฐํƒ€์ž„ ๋ฐ ๋ฆฌํ”Œ๋ ‰์…˜ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ

Java 17์€ JDK ๋‚ด๋ถ€ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ์บก์Аํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฆฌํ”Œ๋ ‰์…˜์œผ๋กœ JDK ๋‚ด๋ถ€๋ฅผ ๊ฑด๋“œ๋ฆฐ๋‹ค๋ฉด InaccessibleObjectException์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ž„์‹œ ์กฐ์น˜: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ JVM ์˜ต์…˜์œผ๋กœ ๊ฐ•์ œ ๊ฐœ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    --add-opens java.base/java.lang=ALL-UNNAMED
  • GC ๋กœ๊ทธ ๋ณ€๊ฒฝ: ๊ธฐ์กด์˜ -XX:+PrintGCDetails ๊ฐ™์€ ์˜ต์…˜์€ -Xlog:gc์™€ ๊ฐ™์€ ํ†ตํ•ฉ ๋กœ๊น… ์‹œ์Šคํ…œ ์˜ต์…˜์œผ๋กœ ๋Œ€์ฒดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

6๋‹จ๊ณ„: ์ž๋™ํ™” ๋„๊ตฌ ํ™œ์šฉ (OpenRewrite)

์ˆ˜๋ฐฑ ๊ฐœ์˜ ํŒŒ์ผ์„ ์ผ์ผ์ด ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ์ž๋™ํ™” ๋„๊ตฌ๋ฅผ ๊ณ ๋ คํ•ด ๋ณด์„ธ์š”.

  • OpenRewrite: Java ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ ˆ์‹œํ”ผ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋ฆฌํŒฉํ† ๋งํ•ด ์ค๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ์˜ˆ์‹œ (Maven):
    mvn org.openrewrite.maven:rewrite-maven-plugin:run \
      -Drewrite.activeRecipes=org.openrewrite.java.migrate.UpgradeToJava17

๋งˆ๋ฌด๋ฆฌ: ์ ์ง„์  ๋„์ž… ์ „๋žต

  1. ์ปดํŒŒ์ผ์€ Java 8 ํƒ€๊ฒŸ์œผ๋กœ, ์‹คํ–‰์€ ์ตœ์‹  JDK๋กœ: ๋จผ์ € ํ™˜๊ฒฝ๋งŒ ๋ฐ”๊พธ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ์‹œํ‚ต๋‹ˆ๋‹ค.
  2. ์ปดํŒŒ์ผ ํƒ€๊ฒŸ ์ƒํ–ฅ: ๋นŒ๋“œ ์„ค์ •์„ ์ƒํ–ฅํ•˜๊ณ  ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ์žก์Šต๋‹ˆ๋‹ค.
  3. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋„์ž…: ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋๋‚œ ํ›„, Record, Text Blocks, Switch Expressions ๊ฐ™์€ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์„ ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๊ณผ์ •์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, Java 17/21์ด ์ฃผ๋Š” ์••๋„์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ๊ณผ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ๋“ค์€ ๊ทธ ๊ฐ€์น˜๊ฐ€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.